#pragma once

#include "public/build.h"
#include "graphics/common.h"

#include <string>

namespace renderit {

	class ishader
	{
	public:
		ishader() {}
		virtual ~ishader() {}
	public:
		virtual bool set_variable(uint32 name, float * value, int count) { return false; }
		virtual bool set_cbuffer(uint32 name, void * data, uint32 size) { return false; }
		virtual bool set_texture(uint32 name, void * texture) { return false; }

		virtual bool set_vertex_format(EVertexFormat format) { return false; }

		virtual void close() {}

	public:
		void set_filepath(const std::string& fullpath) { fullpath_ = fullpath; }
		const std::string& get_filepath() const { return fullpath_; }

	private:
		std::string fullpath_;
	};
}